﻿using System;
using System.Collections.Generic;
using System.Data;
using App_Code.Conexao;
using App_Code.Interface;
using App_Code.Vo;
using FluorineFx;
namespace App_Code.Retaguarda.BD
{
    [RemotingService]
    public class EnderecoBD: BdAbstrato<Endereco>
    {
        public EnderecoBD(ConfiguradorConexao configurador): base(configurador)
        {
        }

        public override void Adicionar(Endereco endereco)
        {
            ComandoSql("[dbo].[ins_TBL_Endereco]", CommandType.StoredProcedure);
            MontarParametros(endereco);
            ExecutarComando();
        }

        public override void Atualizar(Endereco endereco)
        {
            ComandoSql("[dbo].[atu_TBL_Endereco]", CommandType.StoredProcedure);
            MontarParametros(endereco);
            ExecutarComando();
        }

        public override void Excluir(Endereco endereco)
        {
            throw new NotImplementedException();
        }

        public override Endereco Consultar(Endereco endereco)
        {
            ComandoSql("[dbo].[cons_TBL_EnderecoPorCodigoUsuario]", CommandType.StoredProcedure);
            AdicionarParametroNulo("@CODIGO_USUARIO", endereco.UsuarioCodigo);
            return MontarObjeto();
        }

        //public List<Usuario> Listar(Usuario usuario)
        //{
        //    ComandoSql("[dbo].[cons_TBL_AreaAtuacaoPorModalidade]", CommandType.StoredProcedure);
        //    AdicionarParametro("@codModalidade", );
        //    return MontarListagem();
        //}

        protected override void PreencherObjeto(ref Endereco endereco, IDataReader reader)
        {
            #region Endereço Usuário

            if (reader["CODIGO_ENDERECO"] != DBNull.Value)
            {
                endereco.Codigo = (decimal)reader["CODIGO_ENDERECO"];

                if (reader["TIPO_LOGRADOURO"] != DBNull.Value)
                {
                    endereco.TipoLogradouro = reader["TIPO_LOGRADOURO"].ToString();
                }
                if (reader["LOGRADOURO"] != DBNull.Value)
                {
                    endereco.Logradouro = reader["LOGRADOURO"].ToString();
                }
                if (reader["NUMERO"] != DBNull.Value)
                {
                    endereco.Numero = reader["NUMERO"].ToString();
                }
                if (reader["COMPLEMENTO"] != DBNull.Value)
                {
                    endereco.Complemento = reader["COMPLEMENTO"].ToString();
                }
                if (reader["BAIRRO"] != DBNull.Value)
                {
                    endereco.Bairro = reader["BAIRRO"].ToString();
                }
                if (reader["MUNICIPIO"] != DBNull.Value)
                {
                    endereco.Municipio = reader["MUNICIPIO"].ToString();
                }
                if (reader["UF"] != DBNull.Value)
                {
                    endereco.Uf = reader["UF"].ToString();
                }
                if (reader["TIPO_ENDERECO"] != DBNull.Value)
                {
                    endereco.TipoEndereco = (int)reader["TIPO_ENDERECO"];
                }
                if (reader["TELEFONE"] != DBNull.Value)
                {
                    endereco.Telefone = reader["TELEFONE"].ToString();
                }
                if (reader["CELULAR"] != DBNull.Value)
                {
                    endereco.Celular = reader["CELULAR"].ToString();
                }
            }
            #endregion
        }

        private void MontarParametros(Endereco endereco)
        {
            if (endereco.Codigo > 0)
            {
                AdicionarParametro("@codigo", endereco.Codigo); 
            }

            AdicionarParametro("@tipologradouro", endereco.TipoLogradouro);
            AdicionarParametro("@logradouro", endereco.Logradouro);
            AdicionarParametro("@numero", endereco.Numero);
            AdicionarParametro("@complemento", endereco.Complemento);
            AdicionarParametro("@bairro", endereco.Bairro);
            AdicionarParametroNulo("@municipio ", endereco.Municipio);
            AdicionarParametro("@uf", endereco.Uf);
            AdicionarParametro("@tipoendereco", endereco.TipoEndereco);
            AdicionarParametro("@celular", endereco.Celular);
            AdicionarParametro("@telefone", endereco.Telefone);
            AdicionarParametro("@usuario_codigo", endereco.UsuarioCodigo);

        }
    }
}
